package com.zryc.service.impl;

import com.zryc.mapper.ProductCategoryMapper;
import com.zryc.service.IProductCategoryService;
import com.zryc.shop.entity.ProductCategory;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;

/**
 * <p>
 * 商品分类表 服务实现类
 * </p>
 *
 * @author xujiajun
 * @since 2022-10-17
 */
@Service
public class ProductCategoryServiceImpl extends ServiceImpl<ProductCategoryMapper, ProductCategory> implements IProductCategoryService {
    @Override
    public String nextCategeoryCode(Integer parentId, int categoryLevel) {
        switch (categoryLevel){
            case 1:{
                String maxCategoryCode = baseMapper.selectMaxCategoryCodeByParentId(0,categoryLevel);//找到一级分类中最大的categoryCode
                if (StringUtils.isEmpty(maxCategoryCode)) return "01";
                Integer intVal= Integer.valueOf(maxCategoryCode)+1;
                return intVal>=10? String.valueOf(intVal) : "0"+String.valueOf(intVal);//需要通过判断是否要在categoryCode 前面补0
            }
            case 2:{
                String maxCategoryCode = baseMapper.selectMaxCategoryCodeByParentId(parentId,categoryLevel);//找到二级分类中最大的categoryCode
                if (StringUtils.isEmpty(maxCategoryCode)){//当前这个parent ID下还没有二级分类
                    return this.getById(parentId).getCategoryCode()+"01";//通过parentId找到父级分类的categorycode后边拼01
                }else{
                    Integer intVal=Integer.valueOf(maxCategoryCode.substring(2,4))+1;
                    return intVal>=10? this.getById(parentId).getCategoryCode()+String.valueOf(intVal)
                            :this.getById(parentId).getCategoryCode()+ "0"+String.valueOf(intVal);//需要通过判断是否要在categoryCode 前面补0
                }
            }
            case 3:{
                String maxCategoryCode = baseMapper.selectMaxCategoryCodeByParentId(parentId,categoryLevel);//找到二级分类中最大的categoryCode
                if (StringUtils.isEmpty(maxCategoryCode)){//当前这个parent ID下还没有二级分类
                    return this.getById(parentId).getCategoryCode()+"01";//通过parentId找到父级分类的categorycode后边拼01
                }else{
                    Integer intVal=Integer.valueOf(maxCategoryCode.substring(4,6))+1;
                    return intVal>=10? this.getById(parentId).getCategoryCode()+String.valueOf(intVal)
                            :this.getById(parentId).getCategoryCode()+ "0"+String.valueOf(intVal);//需要通过判断是否要在categoryCode 前面补0
                }
            }
            default: return null;

        }
        }
}
